From: Robert Lipe Date: Wed, 16 Sep 2015 03:43:28 +0000 (-0500) Subject: Convert GPWPT to use new parsing scheme. X-Git-Tag: archive/raspbian/1.10.0+ds-2+rpi1~1^2~12^2~10^2~6^2~6 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=242b399577cea46a5c655bb3033688f8dcf10fd0;p=gpsbabel.git Convert GPWPT to use new parsing scheme. --- diff --git a/nmea.cc b/nmea.cc index 14631ebbc..b91c488d0 100644 --- a/nmea.cc +++ b/nmea.cc @@ -624,26 +624,29 @@ gprmc_parse(char* ibuf) static void gpwpl_parse(char* ibuf) { - double latdeg, lngdeg; - char latdir, lngdir; - char sname[99]; - - sscanf(ibuf,"$%*2cWPL,%lf,%c,%lf,%c,%98[^*]", - &latdeg,&latdir, - &lngdeg,&lngdir, - sname); + QStringList fields = QString(ibuf).split(",", QString::KeepEmptyParts); - Waypoint* waypt = new Waypoint; + double latdeg = 0; + if (fields.size() > 1) latdeg = fields[1].toDouble(); + QChar latdir = 'N'; + if (fields.size() > 2) latdir = fields[2][0]; + double lngdeg = 0; + if (fields.size() > 3) lngdeg = fields[3].toDouble(); + QChar lngdir = 'E'; + if (fields.size() > 4) lngdir = fields[4][0]; + QString sname; + if (fields.size() > 5) sname = fields[5]; if (latdir == 'S') { latdeg = -latdeg; } - waypt->latitude = ddmm2degrees(latdeg); if (lngdir == 'W') { lngdeg = -lngdeg; } - waypt->longitude = ddmm2degrees(lngdeg); + Waypoint* waypt = new Waypoint; + waypt->latitude = ddmm2degrees(latdeg); + waypt->longitude = ddmm2degrees(lngdeg); waypt->shortname = sname; curr_waypt = NULL; /* waypoints won't be updated with GPS fixes */